home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 1996 April
/
CHIP 1996 aprilis (CD06).zip
/
CHIP_CD06.ISO
/
hypertxt.arj
/
9308
/
DOS62.CD
< prev
next >
Wrap
Text File
|
1995-04-19
|
10KB
|
215 lines
@VTessék választani!@N
@VInteraktív batch programozás MS DOS 6.0 alatt@N
Sokan és sokat gyentöltük a Microsoftot -- eddig hiába --
amiatt, hogy nem támogatja kellôen az interaktív batch
programozást. Az MS DOS 6.0 megjelenésével némileg
megváltozott a helyzet. Ugyan még nem éri el a külsô
fejlesztôk által készített programok színvonalát -- fôleg
kényelemben --, de végre megmozdult a tohonya óriás.
Az MS DOS 6.0 parancsai között találhatunk egy CHOICE.COM
nevû apróságot. A program -- talán nem véletlenül -- erôsen
emlékeztet a Norton Utilities csomag néhai ASK programjára.
Segítségével a batch program üzenetet írhat ki a
felhasználónak, jelezve a válaszadásra használható
billentyûket, s megadott alapértelmezésekkel is operálhat.
A válaszként lenyomott billentyûnek megfelelô ERRORLEVEL
érték beállításával fejezi be mûködését a program. Az már a
batch file készítôjének a gondja, hogyan értékeli ki a
válaszokat s vezeti tovább a program mûködését a válasznak
megfelelôen.
A CHOICE parancs általánosított parancssora (szintaxisa):
CHOICE [/C[:]gombok] [/N] [/S] [/T[:]c,nn] [üzenetszöveg]
Ha ezt elfelejtenénk, segítséget kérhetünk a CHOICE-tól a
DOS-ban megszokott /? kapcsolóval. A segítô információt
hibás paraméterezés esetén is kiírja a program.
A szabadon választható vagy elhagyható elemeket a
DOS-kézikönyvek megszokott jelölésmódjával [és @N jelek
közé tettem. Ha elhagyjuk az adott paramétert, az
alapértelmezés lép életbe. Minden más kísérô paraméter
nélkül például a CHOICE válaszként az y, Y, n és N betûket
fogadja el (a kis- és nagybetûk között alaphelyzetben nem
tesz különbséget). Az egyes kapcsolók tetszés szerint
felcserélhetôk, nem kell betartani a szintaxis
ismertetésekor használt ábécésorrendet. Vegyük sorra az
egyes parancssori elemek hatását a programocska mûködésére.
@V/C:gombok@N vagy @V/Cgombok@N -- válaszgombok megadása.
Azokat a billentyûket adhatjuk meg, melyek lenyomását a
program válaszként elfogadja. Az egyes karaktereket
folyamatosan, elválasztó jelek, karakterek nélkül kell
beírni. A kettôspont elhagyható, csak a batch file
olvashatóságát javítja. A /C mellett megadott karakterek a
képernyôn a(z esetleg) megadott üzenetszöveg mögött,
közrezáró [és jelek között, egymástól vesszôvel
elválasztva jelennek meg, végül egy kérdôjel következik.
Ha nem akarjuk megjeleníteni a választható válaszgombokat,
adjuk meg a /N kapcsolót (lásd alább). A /C nélkül meghívva
a CHOICE-t egy ""[Y,N@N?" dobozka jelenik meg a képernyôn.
Ha lehetséges válaszként elég ez a két karakter, a /C
kapcsoló el is hagyható.
@V/N@N -- a prompt elrejtése. A /N hatására a program
megjeleníti a megadott üzenetet -- ha van --, a promptot az
elfogadott válaszbillentyûkkel azonban már nem. A /C
mellett megadott, illetve annak elhagyása esetén az
alapértelmezett válaszbillentyûk -- bár nem jelennek meg a
képernyôn -- továbbra is érvényben maradnak.
@V/S@N -- kisbetû-nagybetû nem ugyanaz. A CHOICE
alaphelyzetben nem különbözteti meg a válasz
kiértékelésekor a kis- és nagybetûket. Ez általában
elônyös, hiszen így nem függünk a [CapsLock] és a [Shift]
pillanatnyi állapotától. De vannak esetek, amikor érdemes
lehet megkülönböztetni a kis- és nagybetûket. Ilyenkor kell
megadni a CHOICE-nak a /S kapcsolót.
@V/T:karakter,idô@N vagy @V/Tkarakter,idô@N --
alapválasztás, idôkorláttal. A beérkezô válasznak is
adhatunk egy alapértéket (default) a /T kapcsolóval, amely
életbe lép, ha a megadott ideig nem válaszol a gép elôtt
ülô felhasználó. A várakozási idôt, amit a default
karaktertôl vesszôvel elválasztva, másodpercekben kell
megadni, 0--99 közötti számmal adhatjuk meg. 0 esetén
azonnal a default érték lép életbe. Ezt olyankor célszerû
alkalmazni, ha egy, a CHOICE segítségével létrehozott
interaktív elágazást átmenetileg ki akarunk iktatni a
programból, de az adott sorok elé nem akarunk REM
parancsokat írni, és törölni sem akarjuk azokat. A
kettôspont itt is elhagyható, csak a jobb olvashatóságot
szolgálja.
Vigyázzunk, hogy csak olyan válaszkaraktert adjunk meg a /T
mellett, amit a /C mellett használtunk -- fôleg, ha a /S
kapcsoló alkalmazásával a kis- és nagybetûk között is
különbséget tétetünk a programmal. Ha a parancssorban nem
szerepel /C kapcsoló, akkor a /T mellett csak Y, y, N vagy
n állhat.
A /T kapcsoló használatakor nem látszik, mennyi a
várakozási idô, s az alapértelmezést sem jeleníti meg a
program, ellentétben a CONFIG.SYS-ben használatos
MENUDEFAULT paranccsal. Ott ugyanis látszik az
alapértelmezett válasz, s folyamatosan pereg a hátralevô
válaszidô kiírása. További különbség, hogy a /T mellett
mindkét kísérô paramétert meg kell adnunk, egyiket sem
hagyhatjuk el.
@VÜzenetszöveg@N
A kapcsolókon kívül egy üzenetszöveget is megadhatunk, amit
a program kiír a válaszbillentyûket felsoroló prompt elôtt.
Csupán néhány megkötés van az üzenetszöveggel kapcsolatban.
Egyrészt a DOS által elfogadott parancssor-hossz jelent
limitet (maximum 127 karakter), másrészt az, hogy a
képernyô -- eltekintve a speciális üzemmmódoktól -- 80
karakteres sorokból épül fel. Ennél hosszabb szöveget is
beírhatunk, de ez célszerûtlen. Ha a szövegben a DOS
kapcsolókaraktereként használt / jel is szerepel, akkor az
üzenetszöveget idézôjelek közé kell zárni. Mivel a program
a válaszbillentyûket megadó promptot közvetlenül az
üzenetszöveg mögött írja ki, a jobb olvashatóság érdekében
az üzenetszöveg végére tegyünk legalább egy üres szóközt.
@VKiértékelés@N
A program elemzi a felhasználó válaszát. Ha olyan
billentyût nyomunk le, ami nem szerepel a /C mögött, akkor
sípol, majd tovább várakozik. Az elfogadási listán
szereplô gombok valamelyikének lenyomásakor a program az
ERRORLEVEL értékének megfelelô beállításával ad információt
a batch file további része számára a választásról. A
beállított érték hiba esetén 255 lesz, ha pedig a /C
mellett megadott gombok valamelyikét nyomtuk meg, akkor
annak a felsorolásbeli sorszámát kapja meg az ERRORLEVEL.
Mivel [Ctrl C] vagy [Ctrl Break] kombinációval is ki lehet
lépni a DOS programok többségébôl, a fejlesztôk erre a
""hagyományra" építve azt találták ki, hogy ilyenkor 0
értéket ad a program az ERRORLEVEL-nek.
A kiértékelés és a program további elágaztatása a batch
programok általános szabályainak megfelelôen a
feltételvizsgáló IF paranccsal történik. Az ERRORLEVEL
értékét a nagyobb értékektôl a kisebbek felé haladva kell
vizsgálni.
@KNagy Gábor@N
@VPéldaprogram: MELYIKET.BAT@N
@@ECHO OFF
REM MELYIKET.BAT
REM Példák a CHOICE használatára
REM *******************************
:eleje
REM **** Fômenü ****
CLS
ECHO A rendelkezésre álló programtípusok:
ECHO - S - Szövegszerkesztô
ECHO - A - Adatbáziskezelô
ECHO - W - Windows
ECHO - V - Választás nélkül vége
CHOICE /C:sawcv Milyen programot futtassunk
IF ERRORLEVEL 255 GOTO hiba
IF ERRORLEVEL 4 GOTO kilep
IF ERRORLEVEL 3 GOTO windows
IF ERRORLEVEL 2 GOTO adatbazis
IF ERRORLEVEL 1 GOTO wordproc
IF ERRORLEVEL 0 GOTO kilep
:windows
REM Innen indul a Windows vagy kedvenc Windows alatti
REM programunk a WINPRG.BAT meghívásával
REM
CALL winprg
IF NOT ERRORLEVEL 0 GOTO hiba
GOTO eleje
:adatbazis
REM itt egy almenü jön
CLS
ECHO Adatbáziskezelés
ECHO - D - dBASE III Plus indítása
ECHO - C - Clipperes fejlesztés
ECHO - V - Vissza a fômenübe
ECHO Fél perc várakozás után visszatérek a fômenübe!
CHOICE /C:dcv /T:v,30 Melyiket csináljuk
IF ERRORLEVEL 255 GOTO hiba
IF ERRORLEVEL 3 GOTO eleje
IF ERRORLEVEL 2 GOTO clipper
IF ERRORLEVEL 1 GOTO dbase
IF ERRORLEVEL 0 GOTO kilep
:clipper
REM Innen indítjuk a Clippert hívó CLIP.BAT-ot
CALL clipp
IF NOT ERRORLEVEL 0 GOTO hiba
GOTO eleje
:dbase
REM Innen indítjuk a dBASE III-at hívó DB3.BAT-ot
CALL db3
IF NOT ERRORLEVEL 0 GOTO hiba
GOTO eleje
:wordproc
REM Innen indítjuk a szövegszerkesztôt:
CALL editor
IF NOT ERRORLEVEL 0 GOTO hiba
GOTO eleje
:hiba
REM ide kerülnek a hibakezelô rutinok
:kilep